﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LeagueTableLibrary
{
    /// <summary>
    /// Pojedyncza runda rozgrywki ligowej.
    /// </summary>
    public class Round
    {
        /// <summary>
        /// Unikalny identyfikator rundy.
        /// </summary>
        private int Id;

        /// <summary>
        /// Lista spotkań do rozegrania.
        /// </summary>
        public List<Match> Matches
        {
            get;
            private set;
        }

        /// <summary>
        /// Tworzy rundę o danym identyfikatorze.
        /// </summary>
        /// <param name="id">Identyfikator rundy.</param>
        public Round(int id)
        {
            this.Id = id;
        }

        /// <summary>
        /// Dodaje mecz do rundy.
        /// </summary>
        /// <param name="m">Mecz do rozegrania.</param>
        public void AddMatch(Match m)
        {
            this.Matches.Add(m);
        }

        /// <summary>
        /// Próbuje zaktualizować mecze rundy o ich wyniki jeśli wyniki odnoszą się do meczy tej rundy.
        /// </summary>
        /// <param name="matchesresults">Wyniki meczy.</param>
        /// <returns>'true' jeśli identyfikatory meczy zgadzają się z identyfikatorami wyników, 
        /// 'false' w innym przypadku </returns>
        public bool UpdateResults(List<MatchResult> matchesresults)
        {
            if (matchesresults.Count == Matches.Count)
            {
                for(int i = 0; i <= matchesresults.Count; i++)
                {
                    if (matchesresults[i].Id == this.Matches[i].Id)
                        this.Matches[i].SetScore(matchesresults[i]);
                    else
                        return false;
                }
                return true;
            }
            else
                return false;
        }
    }
}
